package controllers;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;

import dominio.Mejora;
import dominio.Planta;

import applicationModels.Juego;
import appmodel.ZenAppModel;

@SuppressWarnings("serial")
public class SuperServlet extends HttpServlet {
	
	public void restartGame(HttpServletRequest request){
		request.getSession().removeAttribute("juego");
		request.getSession().removeAttribute("jardinZen");
		
		this.makeGameInstance(request);
	}
	
	public void makeGameInstance(HttpServletRequest request){
		if((request.getSession().getAttribute("juego")) == null) {
			applicationModels.Juego j = Juego.makeJuego();
			j.getUsuario().getJardinZen().setSizeTerrestre(10);
			j.getUsuario().getJardinZen().setSizeAcuatico(10);
			
			generatePlants(j);
			
			
			j.getUsuario().setPuntos(1000) ;
		    request.getSession().setAttribute("juego", j);
		    
		    System.out.println("sesion iniciada  " );
		}else{
			
		}
	}
	
	/**
	 * Para agregar una planta nueva, hay que agregar su nombre, pts de atk y def
	 * en las listas que correspondan a su tipo (Acuatico o Terrestre)
	 * @param j
	 */
	protected void generatePlants(Juego j) {
		// Plantas terrestres
		String[] namet = {"Potato", "Sunflower", "Cherry", "Wall Nut", "Pumpkin", "Crazy Toddy", "Fume"};
		int[] atkt = {20, 10, 50, 0, 100, 9999, 25};
		int[] deft = {10, 20, 5, 100, 50, 9999, 15};

		// Plantas acuaticas
		String[] namea = {"Lily Pad", "Cat Tail", "Tangle Kelp"};
		int[] atka = {10, 20, 50};
		int[] defa = {10, 5, 25};
		
		int te = namet.length;
		int aq = namea.length;
		int i;
		
		// Se crean las plantas terrestres
		for(i=0; i < te; i++) {
			Planta p = new Planta(namet[i], atkt[i], deft[i], true);

			for(int h=0; h < 5; h++) {
				p.getMejorasDisponibles().add(new Mejora("Mejora 10 defensa", 10, 0, 10));
				p.getMejorasDisponibles().add(new Mejora("Mejora 10 ataque", 10, 10, 0));	
			}
			
			j.getUsuario().getJardinZen().agregarPlanta(p, false);	
		}
		
		// Se crean las plantas acuaticas
		for(i=0; i < aq; i++) {
			Planta p = new Planta(namea[i], atka[i], defa[i], false);

			for(int h=0; h < 5; h++) {
				p.getMejorasDisponibles().add(new Mejora("Mejora 10 defensa", 10, 0, 10));
				p.getMejorasDisponibles().add(new Mejora("Mejora 10 ataque", 10, 10, 0));	
			}
			
			j.getUsuario().getJardinZen().agregarPlanta(p, false);	
		}
	}
	
	protected ZenAppModel getJardinZen(HttpServletRequest request) {
		return (ZenAppModel) request.getSession().getAttribute("jardinZen");
	}
}
